package 异常;


/**
 * 异常追责过程：JVM会new一个异常，开始寻找解决办法
 * 找到该代码的方法，若该方法没有解决异常，则会自动往上一直追，直到追到main方法
 * main方法也没有解决，jvm则会自动终止程序
 *
 * 通过异常是用来解决无法用过逻辑去处理的问题，例如断网，磁盘坏道
 * 加上Finally{}无论是否出现问题都会执行一次方法体内容.若正常不报错的程序遇到return，会执行完finally再执行return
 *
 *
 *
 * try(自动关闭流（只有实现了autocloseable的接口才行）,将需要关闭流的对象放进来)
 *
 *
 * 继承了RuntimeException的都属于非检查异常，编译时不会出现错误，其余的都是检查异常，编译时如果不处理会报错
 * 可以理解为RuntimeException是bug级别的异常，可以通过逻辑去解决
 * 自建异常：最好见名知意，需要继承顶级异常的超类，需要提供所有超类异常的构造器
 * throw和throws一般搭配使用
 *
 * e.getMessage()获取错误信息并输出
 * e.printStackTrace();打印错误堆栈信息
 *
 * 重写方法的时候子类抛出的异常不可以比父类大，不可以抛父类没有的异常，可以抛父类异常的子类类型。也可以选择不抛
 */












public class 异常总结 {
    public static void main(String[] args) {

    }
}
